recursion in data structure